package XML;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;

import Reproductor.Almacen;
import Reproductor.Cancion;


public abstract class GuardadoXML {
	
	 /**
	  *Declaracion de atributos de la clase GuardadoXML
	  */
	private static XMLOutputter out;
	private static FileOutputStream file;
	private static Document doc;
	
	/**
	 * Crea un archivo, que sera la nueva biblioteca en el destino deseado.
	 * 
     * @param path: ruta donde se creara la biblioteca.
     */
	public static void abrirEscritura(String path){

	    try{

	        out=new XMLOutputter();
	        file=new FileOutputStream(path);
	        }catch(Exception e){e.printStackTrace();}

	}
	
	/**
	 * Guarda una biblioteca en la ruta deseada.
	 * 
	 * @param biblio: Biblioteca con las canciones que se desean guardar.
	 * @param path : Ruta donde se guardara la biblioteca
	 */
	public static void guardarBiblioteca(Almacen biblio, String path){

	    abrirEscritura(path);

	    //Creamos el nodo raiz
	    Element root=new Element("Biblioteca");
	    ArrayList<Cancion> listaCanciones=biblio.listarBiblioteca();
	    for(int i=0;i<listaCanciones.size();i++){
	        //Creamos un hijo para el root
	        Cancion c= listaCanciones.get(i);
	        Element cancion = new Element("Cancion");
	        Element titulo=new Element("Titulo").setText(c.getTitulo()); 
	        Element autor=new Element("Artista").setText(c.getArtista()); 
	        Element album=new Element("Album").setText(c.getAlbum()); 
	        Element formato=new Element("Formato").setText(c.getFormato()); 
	        Element numero=new Element("Numero").setText(c.getNumero()); 
	        Element pathCancion=new Element("Path").setText(c.getPath()); 
        
	        //Enlazamos los nodos hijos
	        cancion.addContent(titulo);
	        cancion.addContent(autor);
	        cancion.addContent(album);
	        cancion.addContent(formato);
	        cancion.addContent(numero);
	        cancion.addContent(pathCancion);
	        //Enlazamos el nodo principal con el hijo cancion
	        root.addContent(cancion);
	    }
	    doc= new Document(root);//Creamos el doc
	    try {
	        out.output(doc,file);
	        file.flush();
	        file.close();
	    } 
	    catch (IOException e) {
	        e.printStackTrace();
	    }
	}

	/**
     * @param args: Array de argumentos
     */
	public static void main(String[] args) {
	
	    Cancion c=new Cancion("dav", "bae", "men", "mp3", "2",22,"/home/david/a.mp3");
	    Cancion c1=new Cancion("a", "e", "i", "o", "30",22,"/home/david/b.mp3");
	    Cancion c2=new Cancion("ddas", "fasd", "hgd", "wef", "22",22,"/home/david/c.mp3");
	    Cancion c3=new Cancion("daasd", "gfs", "xcv", "tre", "54",22,"/home/david/d.mp3");
	    Cancion c4=new Cancion("hfsd", "jkh", "ret", "ert", "66",22,"/home/david/e.mp3");
	    
	    Almacen al= new Almacen();
	    al.anadirBiblioteca(c);
	    al.anadirBiblioteca(c1);
	    al.anadirBiblioteca(c2);
	    al.anadirBiblioteca(c3);
	    al.anadirBiblioteca(c4);

	    GuardadoXML.guardarBiblioteca(al, "BibliotecaXML/fich.b10");	    
	}
}

